#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6+9;
const int INF=1e18;
const int mod=998244353;
int n,m,q,k;
int f[maxn],inv[maxn];
int C(int n,int m)
{
	return f[n]*inv[m]%mod*inv[n-m]%mod;
}
int qpow(int a,int b)
{
	int cnt=1;
	while(b)
	{
		if(b&1) cnt=cnt*a%mod;
		a=a*a%mod;
		b/=2;
	}
	return cnt;
}
signed main()
{
	freopen("sequence.in","r",stdin);
	freopen("sequence.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>m>>q>>k;
	for(int i=1;i<=m;i++) 
	{
		int yuanshen;
		cin>>yuanshen;
	}
	f[0]=1;
	for(int i=1;i<=m;i++) f[i]=f[i-1]*i%mod;
	inv[m]=qpow(f[m],mod-2);
	for(int i=m-1;i>=0;i--) inv[i]=inv[i+1]*(i+1)%mod;
	int res=0;
	for(int i=0;i<=m;i++) 
	{
		if(i&1) res=(res-C(m,i)*qpow(n-i,q))%mod;
		else res=(res+C(m,i)*qpow(n-i,q))%mod;
		if(res<0) res+=mod;
	}
	int ans=res*qpow(k,q-m)%mod*(n-m+1)%mod;
	cout<<ans<<'\n';
	return 0;
}
